<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>父组件向子组件传递数据——驼峰式命名处理</title>
</head>
<body>
<div id="app">
    <!--HTML 标记规则不区分大小写-->
    <!--转换方式：将大写字母转换为小写字母，并且该字母在前面添加- -->
    <cpn v-bind:s-name="person.name" v-bind:n-age="person.age" v-bind:s-gender="person.gender"></cpn>
</div>

<template id="cpn">
    <h1>姓名：{{ sName }}</h1>
    <h1>年龄：{{ nAge }}</h1>
    <h1>性别：{{ sGender }}</h1>
</template>

<script type="module">
    import {createApp, defineComponent, ref} from "../../../js/vue.esm-browser.js";

    // 自定义组件
    let cpn = defineComponent(
        {
            template: "#cpn",
            // 通过 props 选项定义从父组件接收的变量
            props: {
                sName: {
                    type: String,
                    default: null,
                    required: true,
                },
                nAge: {
                    type: Number,
                    default: null,
                    required: true,
                },
                sGender: {
                    type: String,
                    default: "M",
                    required: true,   // 当 required 值为 true 的时候，如果没有默认值，也没有通过父组件传递数据，在控制台就会出现警告。
                },
            },
            setup() {

            }
        }
    );

    let app = createApp(
        {
            setup() {
                let person = ref({
                    name: "abc",
                    age: 18,
                    gender: "M",
                })
                return {person}
            }
        }
    );

    // 注册组件
    app.component("cpn", cpn)

    app.mount("#app")
</script>
</body>
</html>